package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.OmcExpenseItem;
import com.csun.cmny.provider.model.domain.OmcOldmanExpenseItem;
import com.csun.cmny.provider.model.dto.SelectExpenseDto;
import com.csun.cmny.provider.model.vo.BillOldmanInfoVo;
import com.csun.cmny.provider.model.vo.ExpenseItemVo;
import com.csun.cmny.provider.model.vo.ExpenseTypeVo;
import com.csun.cmny.provider.model.vo.SetMealVo;

import java.util.List;

public interface OmcOldmanExpenseItemService extends IService<OmcOldmanExpenseItem> {

    /**
     * 缴费项目-查询
     * @param: [modelCode, loginAuthDto]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.ExpenseTypeVo>
     */
    List<ExpenseTypeVo> queryExpenseItem(Integer modelCode, LoginAuthDto loginAuthDto);

    /**
     * 缴费项目-保存选择项目
     * @param: [modelCode]
     * @return: com.csun.cmny.util.wrapper.Wrapper
     */
    Integer bindExpenseItem(List<OmcOldmanExpenseItem> oldmanExpenseItemList, LoginAuthDto loginAuthDto);

    /**
     * 缴费项目-匹配套餐
     * @param: [oldmanId]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.SetMealVo>
     */
    List<SetMealVo> matchSetMeal(Long oldmanId, LoginAuthDto loginAuthDto);

    /**
     * 老人购买项目查询
     * @param: [oldmanId, loginAuthDto]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.ExpenseTypeVo>
     */
    List<ExpenseItemVo> queryOldmanExpenseItem(Long oldmanId, LoginAuthDto loginAuthDto);

    /**
     * 生成入院缴费单
     * @param: [selectExpenseDto, loginAuthDto]
     * @return: int
     */
    Integer generateOldmaInBill(SelectExpenseDto selectExpenseDto, LoginAuthDto loginAuthDto);

    /**
     * 匹配床位费
     * @param: [bedId, loginAuthDto]
     * @return: com.csun.cmny.provider.model.vo.ExpenseItemVo
     */
    OmcExpenseItem mathcBedFeeByBedId(Long bedId, LoginAuthDto loginAuthDto);

    /**
     * 匹配护理费
     * @param: [careType, loginAuthDto]
     * @return: com.csun.cmny.provider.model.vo.ExpenseItemVo
     */
    OmcExpenseItem mathcCareFeeByCareType(Long levelCareId, LoginAuthDto loginAuthDto);

    /**
     * 查询咨询记录中的床位id
     * @param: [oldmanId, loginAuthDto]
     * @return: java.lang.Long
     */
    Long getAdvisoryBedId(Long oldmanId, LoginAuthDto loginAuthDto);

    /**
     * 暂存老人选择的床位id
     * @param: [oldmanId, bedId, loginAuthDto]
     * @return: java.lang.Integer
     */
    Integer setSelectBedId(Long oldmanId, Long bedId, LoginAuthDto loginAuthDto);

    /**
     * 老人信息展示 入院最后一个页面展示信息用
     * @param: [oldmanId, loginAuthDto]
     * @return: com.csun.cmny.provider.model.vo.BillOldmanInfoVo
     */
    BillOldmanInfoVo getOldmanInfoByOldmanId(Long oldmanId, LoginAuthDto loginAuthDto);

    /**
     * 删除某个流程选择的缴费项目
     * @param: [oldmanId, modelCode, loginAuthDto]
     * @return: int
     */
    Integer deleteSelectItemByModelCode(Long oldmanId, Integer modelCode, LoginAuthDto loginAuthDto);

    /**
     * 乐颐老人入院
     * @param: [selectExpenseDto, loginAuthDto]
     * @return: java.lang.Integer
     */
    Integer oldmanInOfLeyi(SelectExpenseDto selectExpenseDto, LoginAuthDto loginAuthDto);

    /*
    * 查询老人项目 数据迁移用
    * */
    List<ExpenseItemVo> moveQueryOldmanExpenseItem(Long oldmanId, LoginAuthDto loginAuthDto);
}
